﻿Imports Microsoft.DirectX
Imports Microsoft.DirectX.Direct3D
Public Class ObjektButton
    Inherits Objekt2D
    Dim Geklickt As Integer
    Dim Text As ObjektText
    Dim AngezeigterText As String
    Public Tag As String
    Public Sub New(ByVal XKoo As Integer, ByVal YKoo As Integer, ByVal Bild As String, ByVal Text As String, ByVal Fixed As PointF, Optional ByVal Handler As ObjektPanel = Nothing)
        Me.New(XKoo, YKoo, Image.FromFile(Bild), Text, Bild, Fixed, Handler)
    End Sub
    Public Sub New(ByVal XKoo As Integer, ByVal YKoo As Integer, ByVal Bild As Bitmap, ByVal Text As String, ByVal Bildname As String, ByVal Fixed As PointF, Optional ByVal Handler As ObjektPanel = Nothing)
        MyBase.New(Bildname, New Rectangle(0, 0, Bild.Width, Bild.Height / 3), New Point(XKoo, YKoo), Fixed, Handler)
        Geklickt = 0
        AngezeigterText = Sprachconverter.Translate(Text)
        Tag = Text
        Me.Text = New ObjektText(New String() {AngezeigterText}, 0, 0, New Color() {Color.FromArgb(188, 176, 136)}, Schriftengine.Schriftarten.Arial.ToString, 10, FontStyle.Regular)
        Dim Rechteck As Rectangle = Me.Text.GetSchriftart.MeasureString(Grafikengine.Sprite, AngezeigterText, DrawTextFormat.None, Color.Black)
        Me.Text.XStart = (MyBase.Rechteck.Width - Rechteck.Width) / 2
        Me.Text.YStart = (MyBase.Rechteck.Height - Rechteck.Height) / 2

    End Sub
    Public Overrides Function Keydown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) As Boolean
        Return False
    End Function
    Public Overrides Function KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) As Boolean
        Return False
    End Function
    Public Overrides Function MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) As Boolean
        If IsVisble() Then
            If (Not Objekt2D.AlreadyKlickt And Not HasFocus) Or Focused Then
                If New Rectangle(GetRealX, GetRealY, Rechteck.Width, Rechteck.Height).Contains(e.X, e.Y) Then
                    Objekt2D.AlreadyKlickt = True
                    Geklickt = 2
                    MusikEngine.LoadWav(My.Settings.Resourcenpfad + "Sound\Button.wav", False)
                End If
            End If
        End If
    End Function
    Public Overrides Function MouseEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) As Boolean
        If IsVisble() Then
            If New Rectangle(GetRealX, GetRealY, Rechteck.Width, Rechteck.Height).Contains(e.X, e.Y) Then
                If Not Geklickt = 2 Then
                    Geklickt = 1
                End If
            Else
                Geklickt = 0
            End If
        End If
    End Function
    Public Overrides Function MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) As String
        If IsVisble() Then
            If (Not Objekt2D.AlreadyKlickt And Not HasFocus) Or Focused Then
                If New Rectangle(GetRealX, GetRealY, Rechteck.Width, Rechteck.Height).Contains(e.X, e.Y) And Geklickt = 2 Then
                    Objekt2D.AlreadyKlickt = True
                    Return Tag
                Else
                    Return ""
                End If
            Else
                Return ""
            End If
        Else
            Return ""
        End If
    End Function
    Public Overrides Sub Malen()
        If Handler IsNot Nothing Then
            If Not Handler.IsVisible(New Rectangle(Koordinaten.X, Koordinaten.Y, Rechteck.Width, Rechteck.Height), True) Then
                Exit Sub
            End If
        End If
        Dim sngRotation As Double = 0
        Dim intColor As Color = Color.FromArgb(255, 255, 255, 255)
        'prüfen ob wir aus den Screenbereich laufen

        'Festlegen welchen Bereich vom Bitmap wir kopieren

        'Welcher Teil der Textur soll gemalt werden Nichts bedeutet gesamtes Bild

        With Grafikengine.recBild
            .X = 0 : .Width = Rechteck.Width
            .Y = Rechteck.Height * Geklickt : .Height = Rechteck.Height
        End With
        'Falls der Zoomfaktor größer 1 ist müssen einige Ränder abgeschnitten werden
        'Hier befindet sich das Rotationszentrum
        'Achtung Rotationszentrum ist auch Ausgangspunkt der bemalung
        With Grafikengine.ptfRotCenter
            .X = 0
            .Y = 0
        End With
        'Ausschnitte in den Backbuffer zeichnen
        'Wo wird das Bild gezeichnet
        Grafikengine.ptfPosition = GetRealKoordinaten()

        '... und wie breit ist es
        With Grafikengine.szfScale
            .Width = Rechteck.Width
            .Height = Rechteck.Height
        End With
        'jetzt wird es in den Backbuffer gezeichnet
        Grafikengine.Sprite.Draw2D(Textur.getTextur(TexturID), Grafikengine.recBild, Grafikengine.szfScale, Grafikengine.ptfRotCenter, sngRotation, Grafikengine.ptfPosition, intColor)
        Text.Malen(Grafikengine.Sprite)

    End Sub

End Class